草庐IT

php - PHP 闭包

全部标签

javascript - 在闭包内声明的类与没有闭包的标准类

通常我使用基于原型(prototype)的标准OOP方法,我的类看起来像这样varstd=function(){this.log=function(msg){console.log("wanttobeprivate."+msg)};};std.prototype={logInfo:function(msg){this.log(msg);}};但在那种情况下,log是公共(public)方法,任何人都可以使用它。但我想将其设为私有(private),但在原型(prototype)中声明的方法中仍然可用。为此,我们需要闭包。代码会改成这样varclosureStd=(function(){

javascript - 如何避免在 Javascript 闭包中使用此代码段?

我每天在Javascript中使用这个片段100次来关闭封闭对象:Class.prototype.Method=function(arg){varTa=this;vare=function(){Ta.doSomething(arg);};};有没有办法避免Ta变量并仍然引用“外部”(这个词正确吗?)对象? 最佳答案 我不知道我会提倡这个更好,但你可以使用“.bind()”:vare=function(){this.doSomething(arg);}.bind(this);这确保函数“e”中的this值始终是周围上下文的this值。

javascript - 闭包应该如何格式化?

我通过JSLint运行了一个脚本,它发现了一个与括号放置有关的特定问题。我写过:(function(){})();建议使用:(function(){}());我很好奇此特定更改修复了哪些错误或问题。我会假设,因为JSLint将其作为问题挑选出来,所以一定对某人来说是个问题。扩展形式:(function(p){...code...})(param);//parametersaftertheparens-对比-(function(p){...code...}(param)//parameterswithintheparens); 最佳答案

javascript - 操纵闭包中定义的变量

假设我有一个像这样定义和实例化的Javascript类:Demo=function(){varabc="foo";return{gettest(){returnabc;}}}obj=Demo();obj.test//evaluatesto"foo"只遇到这个Demo实例obj,我可以更改属于这个对象的变量abc的值吗?构造函数引入的闭包? 最佳答案 varabc在演示范围之外不能直接使用。如果你想从那个范围之外改变它,你必须添加一个方法来设置它。Demo=function(){varabc="foo";return{gettest(

javascript - 这些是否被认为是 Javascript 闭包?

想在这里弄清楚...所以我有2个问题下面的函数创建了一个闭包。functionFoo(message){varmsg=message;returnfunctionBar(){this.talk=function(){alert(msg);}}};问:闭包是Foo还是Bar?我一直认为闭包是Foo,因为一旦Bar返回,它就会关闭Bar。下一步...下面是一个匿名函数的定义:()();问:这个匿名函数里面的inner-function也是闭包吗?(function(){/* 最佳答案 你需要在这里使用第一原则。Javascript使用词

javascript - 如何在同一 NetBeans (7.3) 项目中同时调试 JavaScript 和 PHP?

在我的第一步中,我使用了这种不合理的方式,如下所述:创建一个HTML5项目来调试JavaScript代码。使用已经过测试的JS代码创建最终的PHP项目,我在其中调试服务器端。所以我想知道是否有更聪明的方法来做到这一点?例如:创建一个独特的项目并在nativeNetBeansJavaScript调试器和(PHP)XDebug之间切换. 最佳答案 对于Chrome中的JavaScript调试,你应该使用官方的NetBeansConnector扩展。下面是一个关于如何使用NetBeans+Chrome+NetBeansConnector调

javascript - 闭包(let 关键字)- Javascript

这个问题在这里已经有了答案:Explanationof`let`andblockscopingwithforloops(5个答案)关闭5年前。functionfirst(){varitems=document.getElementsByTagName("li");for(varx=0;x列表中有4个元素。3个函数的输出:第一:4444第二个:0123第三个:0123我无法理解第三个函数的输出。在第二个函数中,每次调用IIFE都会创建一个新的函数对象,从而创建一个新的val变量。但是在第三个函数中,变量x只有一个副本,那么输出如何:0123如有错误请指正

javascript - Facebook 返回给 Javascript SDK 的访问 token 可以在服务器端与 PHP SDK 一起使用吗?

我正在构建一个使用Facebook连接的网站。我在客户端使用javascriptSDK对用户进行身份验证,并在每次用户登录时在我的服务器上调用AJAX方法,以检查该用户是否为我的应用程序所知,以及该用户是否是新用户以将其FBID存储在我的数据库中将他们注册为新用户。我的问题是:Facebook返回给JavascriptSDK的访问token是否可以在服务器端使用(例如使用PHPSDK)?我可以通过AJAX调用将访问token字符串发送到服务器,将其存储在我的数据库中(连同时间戳,以便我知道它的有效时间),然后使用它来调用图形API服务器端吗?这甚至是合乎逻辑的事情吗?

javascript - 'this"在闭包中是如何工作的?

我到了thisdocument这表示这里发生了关闭:functionaddHandler(){document.getElementById('el').onclick=function(){this.style.backgroundColor='red';};}虽然这段代码移除了闭包:functionaddHandler(){varclickHandler=function(){this.style.backgroundColor='red';};(function(){varel=document.getElementById('el');el.onclick=clickHandl

javascript - 我们是否需要手动清理闭包中未引用的变量?

我正在阅读这篇关于内存泄漏的文章(http://javascript.info/tutorial/memory-leaks#memory-leak-size),其中将此称为内存泄漏:functionf(){vardata="Largepieceofdata";functioninner(){return"Foo";}returninner;}JavaScriptinterpreterhasnoideawhichvariablesmayberequiredbytheinnerfunction,soitkeepseverything.IneveryouterLexicalEnvironme